![[アップデート]Service Quotasでタグ付けとABACに対応したのでやってみた](https://devio2023-media.developers.io/wp-content/uploads/2019/05/aws-iam.png)
[アップデート]Service Quotasでタグ付けとABACに対応したのでやってみた
こんにちは、臼田です。
みなさん、上限緩和してますか?(挨拶
今回は上限緩和申請を行うサービスであるService Quotasがタグ付けとABAC(Attribute Based Access Control / 属性ベースアクセス制御)に対応したのでやってみました。
Service Quotas がタグ付け、属性ベースアクセス制御 (ABAC) のサポートを開始
概要
Service Quotasは様々なリソースのクォータ(制限)を管理しています。例えば1つのリージョンで作成できるVPCの数を増やしたい場合にここからリクエストします。
しかし何でも上限緩和申請できると良くないこともあります。例えば起動できるEC2の数を増やしてしまうと、うっかりたくさんEC2を作ってしまったり、必要ない巨大なEC2を作られたりするので制限を守りたいです。
つまりあるユーザーが上限緩和申請できる対象を絞りたいです。
これまではIAMポリシーで直接クォータのリソースARNを指定して絞る必要がありました。しかしこれは無機質なリソースID(Quotas Code / L-F678F1CE
の様な感じ)でわかりづらく管理しづらかったです。
それが今回、個別のクォータに対するタグ付けに対応し、ABACできるようになりました。
ABACを利用することで、クォータにタグを付けて、そのタグが付いているものだけ上限緩和申請できるような権限を付与することができるようになりました。これでだいぶ管理が簡単になりますね。
ABACの詳細は以下も参考にして下さい。
やってみた
早速やってみます。
クォータのタグ付け
まず管理者がクォータにタグ付けします。今回はVPCのリージョン毎の作成上限数のクォータであるVPCs per Region
を開いてタグを追加します。
タグのKeyをOwner
、ValueをNetworkAdmin
として保存します。これは例なので実際はKey/Value供に任意のもので大丈夫です。
ユーザーのポリシー作成とアタッチ
続いてABACのポリシーを作成してユーザーにアタッチします。
以下のポリシーのIAMポリシーを作成します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "servicequotas:RequestServiceQuotaIncrease", "Resource": "arn:aws:servicequotas:*:999999999999:vpc/*", "Condition": { "StringEquals": { "aws:ResourceTag/Owner": "NetworkAdmin" } } } ] }
注意点としては、ビジュアルエディタで作成しようとすると、2021/01/11現在ではConditionでaws:ResourceTag
が指定できなかったのでjsonで直接していしています。また、対象リソース(Service code)は念の為vpcだけに絞っています。
作成したらこれをアタッチしておきます。Service Quotasの閲覧権限がなければついでにServiceQuotasReadOnlyAccess
などのマネージドポリシーも一緒にアタッチしましょう。
これで準備ができました。
動作の確認
それでは実際に申請してみましょう。IAMポリシーをアタッチしたユーザーでログインして上限緩和申請してみます。
無事申請が通りました。ステータスが保留中になっています。
これだけでは制御が効いているかわかりませんので別の申請も試してみます。以下のようにエラーになりました。
これでタグによる制御が効いていることがわかりました。
まとめ
Service QuotasでのABACを利用したアクセス制御を試してみました。
結構コアな使い方ですが、役に立つこともあるかもしれません。
詳細は以下もご確認下さい。